#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>

using namespace std;

#pragma once
class Direction
{
public:
	Direction() : xDir(0.0f), yDir(-1.0f), zDir(0.0f), hAngle(270), vAngle(0) {}
	Direction(float x, float y, float z, int h, int v) : xDir(x), yDir(y), zDir(z), hAngle(h), vAngle(v) {}
	~Direction();
	Direction(const Direction&);
	Direction& operator=(const Direction&);

	//accessors
	float getXDir() const { return xDir; }
	float getYDir() const { return yDir; }
	float getZDir() const { return zDir; }
	int getHAngle() const { return hAngle; }
	int getVAngle() const { return vAngle; }

	void print() const;
	
	//mutators
	void setXDir(float x) { xDir = x; }
	void setYDir(float y) { yDir = y; }
	void setZdir(float z) { zDir = z; }
	void setHAngle(int a) { hAngle = a; }
	void setVAngle(int a) { vAngle = a; }

	void horizontalRotation(int degrees);
	void verticalRotation(int degrees);

private:
	/*
	#define _USE_MATH_DEFINES
	#include <cmath>

	"Seno de 0: " << sin(0 * M_PI / 180)
	"Coseno de 0: " << cos(0 * M_PI / 180)
	"Tangente de 0: " << tan(0 * M_PI / 180)
	*/
	float xDir, yDir, zDir;
	int hAngle, vAngle;
};